Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=int32), | public, | parameter | :: | LA_HERMITIAN_TRANSPOSE | = | 2 |
Defines a Hermitian transpose operation for a complex-valued matrix. |
integer(kind=int32), | public, | parameter | :: | LA_NO_OPERATION | = | 0 |
Defines no operation should be performed on the matrix. |
integer(kind=int32), | public, | parameter | :: | LA_TRANSPOSE | = | 1 |
Defines a transpose operation. |
An interface to the banded diagonal matrix multiplication routines.
Performs the matrix operation A=αAB or A=αBA where A is a banded matrix and B is a diagonal matrix.
The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | left |
A logical flag indicating whether to perform the operation A=αAB (TRUE) or A=αBA (FALSE). |
||
integer(kind=int32), | intent(in) | :: | m |
The number of rows in the banded matrix A. |
||
integer(kind=int32), | intent(in) | :: | kl |
The number of subdiagonals in the banded matrix. |
||
integer(kind=int32), | intent(in) | :: | ku |
The number of superdiagonals in the banded matrix. |
||
real(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply by. |
||
real(kind=real64), | intent(inout), | dimension(:,:) | :: | a |
The banded matrix to multiply. |
|
real(kind=real64), | intent(in), | dimension(:) | :: | b |
The diagonal matrix to multiply by. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation A=αAB or A=αBA where A is a banded matrix and B is a diagonal matrix.
The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | left |
A logical flag indicating whether to perform the operation A=αAB (TRUE) or A=αBA (FALSE). |
||
integer(kind=int32), | intent(in) | :: | m |
The number of rows in the banded matrix A. |
||
integer(kind=int32), | intent(in) | :: | kl |
The number of subdiagonals in the banded matrix. |
||
integer(kind=int32), | intent(in) | :: | ku |
The number of superdiagonals in the banded matrix. |
||
complex(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply by. |
||
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | a |
The banded matrix to multiply. |
|
complex(kind=real64), | intent(in), | dimension(:) | :: | b |
The diagonal matrix to multiply by. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
An interface to the banded matrix multiplication routines.
Performs the matrix operation y=αAx+βy or y=αATA+βy where A is a banded matrix.
The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | trans |
A logical flag indicating whether to perform the operation y=αAx+βy (FALSE) or y=αATx+βy (TRUE). |
||
integer(kind=int32), | intent(in) | :: | kl |
The number of subdiagonals in the banded matrix A. |
||
integer(kind=int32), | intent(in) | :: | ku |
The number of superdiagonals in the banded matrix A. |
||
real(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply by. |
||
real(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The banded matrix A to multiply by. |
|
real(kind=real64), | intent(in), | dimension(:) | :: | x |
The vector x to multiply by. |
|
real(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply by. |
||
real(kind=real64), | intent(inout), | dimension(:) | :: | y |
On input, the vector y to multiply. On output, the result of the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation y=αop(A)x+βy where A is a banded matrix.
The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | trans |
An integer flag indicating the operation to perform on matrix A. Possible options are:
|
||
integer(kind=int32), | intent(in) | :: | kl |
The number of subdiagonals in the banded matrix A. |
||
integer(kind=int32), | intent(in) | :: | ku |
The number of superdiagonals in the banded matrix A. |
||
complex(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply by. |
||
complex(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The banded matrix A to multiply by. |
|
complex(kind=real64), | intent(in), | dimension(:) | :: | x |
The vector x to multiply by. |
|
complex(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply by. |
||
complex(kind=real64), | intent(inout), | dimension(:) | :: | y |
On input, the vector y to multiply. On output, the result of the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
An interface to the banded matrix to full matrix conversion routines.
Converts a banded matrix to a full matrix.
The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | kl |
The number of subdiagonals in the banded matrix. |
||
integer(kind=int32), | intent(in) | :: | ku |
The number of superdiagonals in the banded matrix. |
||
real(kind=real64), | intent(in), | dimension(:,:) | :: | b |
The banded matrix to convert. |
|
real(kind=real64), | intent(out), | dimension(:,:) | :: | f |
The full matrix to store the result in. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Converts a banded matrix to a full matrix.
The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | kl |
The number of subdiagonals in the banded matrix. |
||
integer(kind=int32), | intent(in) | :: | ku |
The number of superdiagonals in the banded matrix. |
||
complex(kind=real64), | intent(in), | dimension(:,:) | :: | b |
The banded matrix to convert. |
|
complex(kind=real64), | intent(out), | dimension(:,:) | :: | f |
The full matrix to store the result in. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
An interface to the banded to dense matrix conversion routines.
Converts a banded matrix to a dense matrix.
The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | m |
The M-by-N dense matrix. |
||
integer(kind=int32), | intent(in) | :: | kl |
The number of subdiagonals. Must be at least 0. |
||
integer(kind=int32), | intent(in) | :: | ku |
The number of superdiagonals. Must be at least 0. |
||
real(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The (KL+KU+1)-by-N banded matrix. |
|
real(kind=real64), | intent(out), | dimension(:,:) | :: | x |
The M-by-N dense matrix. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Converts a banded matrix to a dense matrix.
The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | m |
The M-by-N dense matrix. |
||
integer(kind=int32), | intent(in) | :: | kl |
The number of subdiagonals. Must be at least 0. |
||
integer(kind=int32), | intent(in) | :: | ku |
The number of superdiagonals. Must be at least 0. |
||
complex(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The (KL+KU+1)-by-N banded matrix. |
|
complex(kind=real64), | intent(out), | dimension(:,:) | :: | x |
The M-by-N dense matrix. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
An interface to the dense to banded matrix conversion routines.
Converts a banded matrix stored in dense format to a compressed form.
The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The matrix to convert. |
|
integer(kind=int32), | intent(in) | :: | kl |
The number of subdiagonals. Must be at least 0. |
||
integer(kind=int32), | intent(in) | :: | ku |
The number of superdiagonals. Must be at least 0. |
||
real(kind=real64), | intent(out), | dimension(:,:) | :: | x |
The (KL+KU+1)-by-N banded matrix. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Converts a banded matrix stored in dense format to a compressed form.
The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The matrix to convert. |
|
integer(kind=int32), | intent(in) | :: | kl |
The number of subdiagonals. Must be at least 0. |
||
integer(kind=int32), | intent(in) | :: | ku |
The number of superdiagonals. Must be at least 0. |
||
complex(kind=real64), | intent(out), | dimension(:,:) | :: | x |
The (KL+KU+1)-by-N banded matrix. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
An interface to the determinant routines.
Computes the determinant of a matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=real64), | intent(inout), | dimension(:,:) | :: | a |
On input, the matrix on which to operate. On output, the LU factored matrix in the form [L\U] where L is unit lower triangular and U is upper triangular. The unit diagonal elements of L are not stored. |
|
integer(kind=int32), | intent(out), | optional, | target, dimension(:) | :: | iwork |
An MIN(M, N)-element array used to track row-pivot operations. The array stored pivot information such that row I is interchanged with row IPVT(I). If not supplied, this array is allocated within. |
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
The determinant of the matrix.
Computes the determinant of a matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | a |
On input, the matrix on which to operate. On output, the LU factored matrix in the form [L\U] where L is unit lower triangular and U is upper triangular. The unit diagonal elements of L are not stored. |
|
integer(kind=int32), | intent(out), | optional, | target, dimension(:) | :: | iwork |
An MIN(M, N)-element array used to track row-pivot operations. The array stored pivot information such that row I is interchanged with row IPVT(I). If not supplied, this array is allocated within. |
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
The determinant of the matrix.
An interface to the diagonal matrix multiplication routines.
Performs the matrix operation C=αAop(B)+βC or C=αop(B)A+βC where A is a diagonal matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | lside |
A logical flag indicating if the diagonal matrix is on the left. |
||
logical, | intent(in) | :: | trans |
A logical flag indicating if the matrix B should be transposed. |
||
real(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
real(kind=real64), | intent(in), | dimension(:) | :: | a |
The diagonal matrix A in the operation. |
|
real(kind=real64), | intent(in), | dimension(:,:) | :: | b |
The matrix B in the operation. |
|
real(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply the matrix C. |
||
real(kind=real64), | intent(inout), | dimension(:,:) | :: | c |
The matrix C in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation B=αAB or B=αBA where A is a diagonal matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | lside |
A logical flag indicating if the diagonal matrix is on the left. |
||
real(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
real(kind=real64), | intent(in), | dimension(:) | :: | a |
The diagonal matrix A in the operation. |
|
real(kind=real64), | intent(inout), | dimension(:,:) | :: | b |
The matrix B in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation C=αAop(B)+βC or C=αBA+βC where A is a diagonal matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | lside |
A logical flag indicating if the diagonal matrix is on the left. |
||
logical, | intent(in) | :: | trans |
A logical flag indicating if the matrix B should be transposed. |
||
real(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
complex(kind=real64), | intent(in), | dimension(:) | :: | a |
The diagonal matrix A in the operation. |
|
real(kind=real64), | intent(in), | dimension(:,:) | :: | b |
The matrix B in the operation. |
|
real(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply the matrix C. |
||
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | c |
The matrix C in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation C=αAop(B)+βC or C=αop(B)A+βC where A is a diagonal matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | lside |
A logical flag indicating if the diagonal matrix is on the left. |
||
integer(kind=int32), | intent(in) | :: | opb |
An integer flag indicating the operation to perform on matrix B. Possible options are:
|
||
real(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
complex(kind=real64), | intent(in), | dimension(:) | :: | a |
The diagonal matrix A in the operation. |
|
complex(kind=real64), | intent(in), | dimension(:,:) | :: | b |
The matrix B in the operation. |
|
real(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply the matrix C. |
||
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | c |
The matrix C in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation C=αAop(B)+βC or C=αop(B)A+βC where A is a diagonal matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | lside |
A logical flag indicating if the diagonal matrix is on the left. |
||
integer(kind=int32), | intent(in) | :: | opb |
An integer flag indicating the operation to perform on matrix B. Possible options are:
|
||
complex(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
complex(kind=real64), | intent(in), | dimension(:) | :: | a |
The diagonal matrix A in the operation. |
|
complex(kind=real64), | intent(in), | dimension(:,:) | :: | b |
The matrix B in the operation. |
|
complex(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply the matrix C. |
||
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | c |
The matrix C in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation B=αAB or B=αBA where A is a diagonal matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | lside |
A logical flag indicating if the diagonal matrix is on the left. |
||
complex(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
complex(kind=real64), | intent(in), | dimension(:) | :: | a |
The diagonal matrix A in the operation. |
|
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | b |
The matrix B in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation C=αAop(B)+βC or C=αop(B)A+βC where A is a diagonal matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | lside |
A logical flag indicating if the diagonal matrix is on the left. |
||
integer(kind=int32), | intent(in) | :: | opb |
An integer flag indicating the operation to perform on matrix B. Possible options are:
|
||
complex(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
real(kind=real64), | intent(in), | dimension(:) | :: | a |
The diagonal matrix A in the operation. |
|
complex(kind=real64), | intent(in), | dimension(:,:) | :: | b |
The matrix B in the operation. |
|
complex(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply the matrix C. |
||
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | c |
The matrix C in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation B=αAB or B=αBA where A is a diagonal matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | lside |
A logical flag indicating if the diagonal matrix is on the left. |
||
complex(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
real(kind=real64), | intent(in), | dimension(:) | :: | a |
The diagonal matrix A in the operation. |
|
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | b |
The matrix B in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation B=αAB or B=αBA where A is a diagonal matrix and B is a sparse matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | lside | |||
real(kind=real64), | intent(in) | :: | alpha | |||
real(kind=real64), | intent(in), | dimension(:) | :: | a | ||
class(csr_matrix), | intent(inout) | :: | b | |||
class(errors), | intent(inout), | optional, | target | :: | err |
An interface to the diagonal extraction routines.
Extracts the diagonal of a matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The M-by-N matrix. |
|
real(kind=real64), | intent(out), | dimension(:) | :: | diag |
The MIN(M, N) element array for the diagonal elements. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Extracts the diagonal of a matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The M-by-N matrix. |
|
complex(kind=real64), | intent(out), | dimension(:) | :: | diag |
The MIN(M, N) element array for the diagonal elements. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Extracts the diagonal of a matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(csr_matrix), | intent(in) | :: | a |
The M-by-N matrix. |
||
real(kind=real64), | intent(out), | dimension(:) | :: | diag |
The MIN(M, N) element array for the diagonal elements. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
An interface to the matrix multiplication routines.
Performs the matrix operation C=αAB+βC.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | transa |
A logical flag indicating if the matrix A should be transposed. |
||
logical, | intent(in) | :: | transb |
A logical flag indicating if the matrix B should be transposed. |
||
real(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
real(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The matrix A in the operation. |
|
real(kind=real64), | intent(in), | dimension(:,:) | :: | b |
The matrix B in the operation. |
|
real(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply the matrix C. |
||
real(kind=real64), | intent(inout), | dimension(:,:) | :: | c |
The matrix C in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix-vector operation C=αAB+βC.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | trans |
A logical flag indicating if the matrix A should be transposed. |
||
real(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
real(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The matrix A in the operation. |
|
real(kind=real64), | intent(in), | dimension(:) | :: | b |
The vector B in the operation. |
|
real(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply the vector C. |
||
real(kind=real64), | intent(inout), | dimension(:) | :: | c |
The vector C in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation C=αAB+βC.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | opa |
An integer flag indicating the operation to perform on matrix A. Possible options are:
|
||
integer(kind=int32), | intent(in) | :: | opb |
An integer flag indicating the operation to perform on matrix B. Possible options are:
|
||
complex(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
complex(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The matrix A in the operation. |
|
complex(kind=real64), | intent(in), | dimension(:,:) | :: | b |
The matrix B in the operation. |
|
complex(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply the matrix C. |
||
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | c |
The matrix C in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix-vector operation C=αAB+βC.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | opa |
An integer flag indicating the operation to perform on matrix A. Possible options are:
|
||
complex(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the product of A and B. |
||
complex(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The matrix A in the operation. |
|
complex(kind=real64), | intent(in), | dimension(:) | :: | b |
The vector B in the operation. |
|
complex(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply the vector C. |
||
complex(kind=real64), | intent(inout), | dimension(:) | :: | c |
The vector C in the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
An interface to the matrix rank routines.
Computes the rank of a matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=real64), | intent(inout), | dimension(:,:) | :: | a |
The matrix. |
|
real(kind=real64), | intent(in), | optional | :: | tol |
An optional input, that if supplied, overrides the default tolerance on singular values such that singular values less than this tolerance are treated as zero. The default tolerance is: MAX(M, N) * EPS * MAX(S). If the supplied value is less than the smallest value that causes an overflow if inverted, the tolerance reverts back to its default value, and the operation continues; however, a warning message is issued. |
|
real(kind=real64), | intent(out), | optional, | target, dimension(:) | :: | work |
An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork. If not provided, the memory required is allocated within. |
integer(kind=int32), | intent(out), | optional | :: | olwork |
An optional output used to determine workspace size. If supplied, the routine determines the optimal size for work, and returns without performing any actual calculations. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
The rank of the matrix.
Computes the rank of a matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | a |
The matrix. |
|
real(kind=real64), | intent(in), | optional | :: | tol |
An optional input, that if supplied, overrides the default tolerance on singular values such that singular values less than this tolerance are treated as zero. The default tolerance is: MAX(M, N) * EPS * MAX(S). If the supplied value is less than the smallest value that causes an overflow if inverted, the tolerance reverts back to its default value, and the operation continues; however, a warning message is issued. |
|
complex(kind=real64), | intent(out), | optional, | target, dimension(:) | :: | work |
An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork. If not provided, the memory required is allocated within. |
integer(kind=int32), | intent(out), | optional | :: | olwork |
An optional output used to determine workspace size. If supplied, the routine determines the optimal size for work, and returns without performing any actual calculations. |
|
real(kind=real64), | intent(out), | optional, | target, dimension(:) | :: | rwork |
An optional input, that if provided, prevents any local memory allocation for real-valued workspace arrays. If not provided, the memory required is allocated within. If provided, the length of the array must be at least 6 * MIN(M, N). |
class(errors), | intent(inout), | optional, | target | :: | err |
The rank of the matrix. |
The rank of the matrix.
An interface to the rank-1 update routines.
Performs a rank-1 update of a matrix of the form A=αxyT+A.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the outer product of x and y. |
||
real(kind=real64), | intent(in), | dimension(:) | :: | x |
The vector x in the outer product. |
|
real(kind=real64), | intent(in), | dimension(:) | :: | y |
The vector y in the outer product. |
|
real(kind=real64), | intent(inout), | dimension(:,:) | :: | a |
The matrix A to update. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs a rank-1 update of a matrix of the form A=αxyH+A.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply the outer product of x and y. |
||
complex(kind=real64), | intent(in), | dimension(:) | :: | x |
The vector x in the outer product. |
|
complex(kind=real64), | intent(in), | dimension(:) | :: | y |
The vector y in the outer product. |
|
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | a |
The matrix A to update. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
An interface to the reciprocal multiplication routines.
Computes the product of a scalar and a vector, where the scalar is the reciprocal of the scalar A.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=real64), | intent(in) | :: | a |
The scalar A, which is the reciprocal of the scalar to multiply by. |
||
real(kind=real64), | intent(inout), | dimension(:) | :: | x |
On input, the vector to multiply. On output, the product of the vector and the scalar reciprocal. |
An interface to the swap routines.
Swaps the contents of two arrays.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=real64), | intent(inout), | dimension(:) | :: | x |
On input, the first array to swap. On output, the contents of the first array are copied to the second array. |
|
real(kind=real64), | intent(inout), | dimension(:) | :: | y |
On input, the second array to swap. On output, the contents of the second array are copied to the first array. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Swaps the contents of two arrays.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=real64), | intent(inout), | dimension(:) | :: | x |
On input, the first array to swap. On output, the contents of the first array are copied to the second array. |
|
complex(kind=real64), | intent(inout), | dimension(:) | :: | y |
On input, the second array to swap. On output, the contents of the second array are copied to the first array. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
An interface to the trace routines.
Computes the trace of a matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=real64), | intent(in), | dimension(:,:) | :: | x |
The matrix. |
The trace of the matrix.
Computes the trace of a matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=real64), | intent(in), | dimension(:,:) | :: | x |
The matrix. |
The trace of the matrix.
An interface to the triangular matrix multiplication routines.
Performs the matrix operation B=αATA+βB or B=αAAT+βB where A is a triangular matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | upper |
A logical flag indicating whether the matrix A is upper triangular (TRUE) or lower triangular (FALSE). |
||
real(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply by. |
||
real(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The triangular matrix A to multiply by. |
|
real(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply by. |
||
real(kind=real64), | intent(inout), | dimension(:,:) | :: | b |
On input, the matrix B to multiply. On output, the result of the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |
Performs the matrix operation B=αATA+βB or B=αAAT+βB where A is a triangular matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | upper |
A logical flag indicating whether the matrix A is upper triangular (TRUE) or lower triangular (FALSE). |
||
complex(kind=real64), | intent(in) | :: | alpha |
The scalar α to multiply by. |
||
complex(kind=real64), | intent(in), | dimension(:,:) | :: | a |
The triangular matrix A to multiply by. |
|
complex(kind=real64), | intent(in) | :: | beta |
The scalar β to multiply by. |
||
complex(kind=real64), | intent(inout), | dimension(:,:) | :: | b |
On input, the matrix B to multiply. On output, the result of the operation. |
|
class(errors), | intent(inout), | optional, | target | :: | err |
An error object to report any errors that occur. |